By moving slider you can choose specific frame.
ContentView.swift
import SwiftUI
import AVKit
import AVFoundation
//================================================================================
// STRUCT: ContentView
//================================================================================
struct ContentView: View {
var player = AVPlayer(url: URL(string: "https://ivoronline.com/BachataBasic.mp4")!)
var body: some View {
VStack {
PlayerView (player: player)
ControlsView(player: player)
}
}
}
//================================================================================
// STRUCT: ControlsView
//================================================================================
struct ControlsView : View {
@State var play = false
@State var seekPos = 0.0
let player : AVPlayer
var body: some View {
VStack {
Button(play ? "pause" : "play") {
self.play.toggle()
switch(self.play) {
case true : self.player.play()
case false : self.player.pause()
}
}
Slider(value: $seekPos, in: 0...1, step: 0.01, onEditingChanged: { _ in
guard let item = self.player.currentItem else { return }
let targetTime = self.seekPos * item.duration.seconds
self.player.seek(to: CMTime(seconds: targetTime, preferredTimescale: 600))
})
}
}
}